import type { AxiosPromise } from "axios";

// 文件相关接口
export interface FileApi {
  /** File Api Base Url. */
  baseApiUrl(): string;
  /** File 上传  Url. */
  uploadUrl(): string;
  /** Authorization Object {  Authorization:"Bearer XX" } */
  authHeader(): Object;
  /**
   * 获取图片Full路径.
   * @param type resize	等比例缩放,white	补白,trans	补透明,clip	裁剪
   */
  imageUrl(imageUrl: string, width: number, height: number, type: string): string;
  /**
   * Id 获取图片Full路径
   * @param type resize	等比例缩放,white	补白,trans	补透明,clip	裁剪
   */
  imageIdUrl(imageId: string, width: number, height: number, type: string): string;
  /** url 获取文件Full路径 */
  fileUrl(fileUrl?: string): string;
  /** Id 获取文件Full路径 */
  fileIdUrl(fileId?: string): string;
  /** 文件是否存在 */
  existFileHex(file: File, sm3: string, sha256: string): AxiosPromise<FileInfo>;
  /** 上传文件Base64 */
  uploadBase64File(base64: FileBase64Req): AxiosPromise<FileInfo>;
  /** 上传文件 */
  uploadFile(file: File): AxiosPromise<FileInfo>;
  /** 删除文件 */
  deleteFile(filePath?: string): AxiosPromise;
}

/**
 * 文件API类型声明
 */
export interface FileInfo {
  name: string;
  url: string;
}

export interface FileBase64Req {
  //租户.
  tenant?: string;
  // Base64文件内容
  base64?: string;
  // 文件名称
  fileName?: string;
  // 内容类型
  contentType?: string;
  // 保存路径
  fileDir?: string;
}
